# -*- coding:utf-8  -*-
# @Author: ChenYangMing
# @Time: 2024-08-29

import os
import logging

from Common.config_utils import Config


class LogUtils:
    """
    日志工具类，提供日志记录器的配置和设置。
    包括创建日志记录器、设置日志级别、创建文件和流处理器、定义日志格式等。
    """
    @staticmethod
    def setup_logger(
            name,
            level=logging.INFO,
    ):
        """
        设置并配置日志记录器。
        :param name: str, 日志记录器的名称。
        :param level: int, 日志记录的级别，默认为 logging.INFO。
        :return: logging.Logger, 配置好的日志记录器对象。
        """
        logger = logging.getLogger(name)
        logger.setLevel(level)

        # 创建一个文件处理器
        log_file_path = os.path.join(Config.LOG_PATH, name)
        file_handler = logging.FileHandler(log_file_path)
        file_handler.setLevel(level)

        # 创建一个流处理器，用于输出到控制台
        stream_handler = logging.StreamHandler()
        stream_handler.setLevel(level)

        # 定义日志格式
        formatter = logging.Formatter('%(asctime)s - %(levelname)s - %(message)s')
        file_handler.setFormatter(formatter)
        stream_handler.setFormatter(formatter)

        # 添加处理器到logger
        logger.addHandler(file_handler)
        logger.addHandler(stream_handler)

        return logger


# 调用示例
# log_file_name = '预测_无线小区多指标时空序列预测_LSTM_20240829163700.log'
# logger = LogUtils.setup_logger(log_file_name)
# logger.info("This is an info message.")
# logger.error("This is an error message.")
